# 字符串的用法——众多方法
# 内部实现了很多的好用便捷的方法
string = "I am Chinese"
# 字符串查找
# count查找某个字符在字符串里出现的次数
string.count("i")
# find方法，还有rfind方法分别是从左右两边开始查找特定字符并返回对应下标
# 若查找不到会返回-1
x = string.find("I")
y = string.rfind("I")

# index方法，和find功能相同，但是查询不到时会爆出异常
# 同理index也有rindex-只需要使用index即可

code = """  
    peint()
                """
# 替换
# expandtabs    使用空格替换tab制表符
print(code.expandtabs(4))   # 参数是一个tab所占的字符数
# replace 将某些特定字符替换为新的字符串
# translate(table)-先通过str.maketrans("我是王正当","ImWzd")-制定一一对应规则，然后将规则传入逐一替换
str1 = "我是王正当，你好呀"
table = str.maketrans("我是王正当","ImWzd")
print(str1.translate(table))
# translate还有第三个可选参数，作用是将指定字符串忽略

# 字符串判断方法
# startswith-判断字符串起始是否为传入指定字符
# endswith-判断字符串末尾是否为传入指定字符，两者都有两个可选参数-start和end 分别可以表示主字符串切片部分进行判断
# 传入字符串可以是以元组为形式的多个字符串，只要其一满足便会返回true

# istitle-判断字符串中的单词是否都是首字母大写
# isupper、islower-判断所以字符是否大写、小写
# isalpha-判断字符串是否都为字母
# isspace-是否所有字符都是空白字符串（换行、制表符、空格都属于空白字符）
# isprintable-判断是否字符串都是为可打印字符（在这里，可打印字符仅不包括转义字符）

# 判断数字
# isalnum、isdecimal、isdigit、isnumeric-都是判断字符串是否全都是数字字符—具体的不同之处用处不大

# isidentifier-判断字符串是否满足标识符标准

# 截取字符串
# lstrip、rstrip、strip-去除左、右、左右的空白-添加可选参数（字符串）会把空白替换为所传入字符串中的任意一个字符
# removeprefix、removesuffix-删除指定前缀和指定后缀字符串（非单个字符）
# 分隔字符串
# partition、rpartition-将字符串切割为三部分，中间是传入的字符（有从左和从右寻找的不同）
# 返回的是一个元组
# split-第一个参数是分隔符，第二个参数指定将字符串分为几段（默认为-1表示最大），结果返回的是一个列表，同样也有rsplit
# splitline-相比于split制定了分隔符为换行符(包含三种)-内置可选参数选择true or false 可以决定是否保留换行符
# linux系统中换行符为/n,windows:/r/n,mar:/r
# join-字符串拼接方法
# 形式："连接字符".join(["one","two","three"])-结果为one.two.three
# join里面的参数为列表，元组都行

# 格式化字符串
a = 12
print("我今年{}岁了".format(a))
# 花括号中可以添加索引值来确定填充format中的变量-还可以通过关键字索引来确定key与value
print(f"我今年{a:+12.3f}岁了")
# print(f"{:b}")-二进制    {:c}-Unicode字符形式输出  {:d}-十进制输出    {:o}-八进制输出  {:X}-十六进制输出   {:#b}-会有二进制前缀
# f":{fill}{align}{width}{prec}{ty}"    -分别表示填充，对其方式，宽度，精度，形式输出
